查看原文
其他

shell编程 --- 一些简单的运算符

帅地 苦逼的码农 2019-01-22

每天进步一点点,从量变到质量。


今天讲讲shell编程中的运算符。学过例如c,java等语言的人可能都知道运算符是啥个东东,也知道如何使用各种运算符。不过,shell的运算符和其他大部分编程语言还是有那么一点点差别的。不信你往下看。


先说说讲的大体内容

  • 算术运算符

  • 关系运算符

  • 有关字符串的运算符


算术运算符


估计可能还有些人不清除啥是算术运算符、啥是关系运算符。说白了算术运算符就是最基本的那些运算符,即加减乘除、取余、赋值(=)等这些基本的、最常用的运算符。


对于shell中数与数之间的运算还是和其他语言有那么一点区别。例如要你算a=5+10。可能在别的语言中,你直接

a=5+10

就可以了。但是很抱歉,在shell中行不通。如果你这样写,在shell中a的值不是15,a的值就是”5+10”这个字符串。


所以我们需要借助其他命令来实现,如awkexpr这些命令。其中expr算是用的比较多,因此,我们也用expr这个命令来解决数值之间的运算。至于怎么用,简单粗暴,直接看程序:

   #!/bin/bash    a=`expr 5 + 10`    echo "a=$a"

执行脚本的结果

   a=15

注意点

等号之间不能有空格
表达式expr以及加号+与数值之间要有空格
使用的是反引号`把他们圈起来,而不是单引号。

问题:为啥他们之间要有空格?
考考你。


下面我演示一下加减乘除。

   #!/bin/bash      a=20    b=40          #加法    c=`expr $a + $b`      echo "a+b=$c"    #减法      c=`expr $a - $b`      echo "a-b=$c"      #乘法,注意有个\      c=`expr $a \* $b`      echo "a*b=$c"      #除法        c=`expr $a / $b`    echo "a/b=$c"

输出结果

   a+b=40      a-b=-20      a*b=800    a/b=2

注意点

  • 乘号(*)前边需要加转义字符(\)才行哦。

  • 在MAC中shell的expr语法相当于:$((表达式)),此处表达式中的”*”不需要加转义字符\




关系运算符


关系运算符就是用来比较两个数之间的大小的。不过需要注意的是,我下面列举的关系运算符是不支持字符串的,除非字符串的值是数字


常用关系运算符如下:


  • -eq:判断是否相等,相等则返回true,否则返回false。下面类似

  • -nq:判断是否不相等。

  • -gt:判断左边的数是否大于右边的。

  • -lt:判断左边的数是否小于右边的。

  • -ge:判断左边的数是否大于等于右边

  • -le:判断左边的数是否小于等于右边。


直接看程序,相信你们看一下就知道如何使用了,这些都挺简单,没有什么好详细讲的。

   a=10    b=20    if [ $a -eq $b ]        then            echo "相等"    else        echo "不相等"    fi    #记得加上fi代表结束

输出结果:

   不相等

我就演示一个,其他类似。



有关字符串的一些运算符


下面列举一些常用于字符串的运算符


  • =:判断两个字符串是否相等。相等则返回true,否则返回false。注意啊,这个和我们平时用的’==’不一样哦。

  • !=:判断两个字符串是否不相等。

  • -z:检测字符串的长度是否为0。

  • -n:检测字符串长度是否不为0。

  • str:检测字符串是否为空。


简单暴力,直接代码演示,相信聪明的你们一眼就知道怎么用了

   #!/bin/bash    a="aa"    b="bb"    if [ $a = $b ]        then        echo "a与b相等"    else        echo "a与b不相等"    fi    if [ -z $a ]        then            echo "a字符串的长度为0"    else            echo "a字符串的长度不为0"    fi

输出结果:

   a与b不相等    a字符串的长度不为0

大家多动手试试勒



好吧,可能要跟大家说声抱歉。讲着讲着讲的有点粗糙。也有点随便。本来想好好扯的,还有很多细节很多知识。不过·····不知为啥,就突然内心有点烦躁····居然烦躁那可以留着明天或者之后写啊。不过虽然是简单的一点东西,但是写起来真的很花时间,就不想留了之后写了。在此要和大家说声抱歉。也感谢大家的阅读,希望对你有所帮助勒。


推荐阅读:
shell编程 —- Shell入门介绍
Shell编程 —- 变量

感谢你的阅读,希望对你有所帮助

关注我的公众号:苦逼的码农

每天推送技术文章,各种资源以及

每日一题 有关面试的算法题

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存